n=int(input())
arr=list(map(int,input().split()))
arr.sort()
y=arr[-1]
for i in range(1,y+1):
if(y%i==0):
arr.remove(i)
print(y,max(arr))
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
int main() {
int n;
cin >> n;
multiset<int>v;
for (int i = 0; i < n; i++) {
int o;
cin >> o;
v.insert(o);
}
int x = *max_element(v.begin(), v.end());
for (int i = 1; i <= x; i++) {
if (x % i == 0)
v.erase(v.find(i));
}
int y = *max_element(v.begin(), v.end());
cout << x << " " << y << endl;
return 0;
}
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |
851A - Arpa and a research in Mexican wave | 811A - Vladik and Courtesy |
1006B - Polycarp's Practice | 1422A - Fence |
21D - Traveling Graph | 1559B - Mocha and Red and Blue |
1579C - Ticks | 268B - Buttons |
898A - Rounding | 1372B - Omkar and Last Class of Math |
1025D - Recovering BST | 439A - Devu the Singer and Churu the Joker |
1323A - Even Subset Sum Problem | 1095A - Repeating Cipher |
630F - Selection of Personnel | 630K - Indivisibility |
20B - Equation | 600B - Queries about less or equal elements |
1015A - Points in Segments | 1593B - Make it Divisible by 25 |
680C - Bear and Prime 100 | 1300A - Non-zero |
1475E - Advertising Agency | 1345B - Card Constructions |